package com.jms.framework.exception;

/**
 * 当尝试设置一个已经具有值的属性时抛出的异常
 * 这个异常指示了在不应该修改属性值的情况下进行了设置操作
 * @author JMS
 * @version 1.0
 * @since 20250124
 */
public class PropertyAlreadySetException extends RuntimeException {

    /**
     * 构造一个带有指定详细消息的PropertyAlreadySetException
     *
     * @param message 详细消息，描述属性已设置的情况
     */
    public PropertyAlreadySetException(String message) {
        super(message);
    }

    /**
     * 构造一个带有指定详细消息和原因的PropertyAlreadySetException
     *
     * @param message 详细消息，描述属性已设置的情况
     * @param cause 异常的原因，可以是底层抛出的异常
     */
    public PropertyAlreadySetException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 构造一个带有指定原因的PropertyAlreadySetException
     *
     * @param cause 异常的原因，可以是底层抛出的异常
     */
    public PropertyAlreadySetException(Throwable cause) {
        super(cause);
    }

    /**
     * 构造一个带有指定类和属性名称的PropertyAlreadySetException
     * 这个构造函数用于创建一个包含特定类和属性名称的详细消息
     *
     * @param clazz 发生属性重复设置异常的类
     * @param propertyName 尝试设置的属性名称
     */
    public PropertyAlreadySetException(Class<?> clazz, String propertyName) {
        super("Property '" + propertyName + "' is already set for class '" + clazz.getName() + "'");
    }
}
